#include "gd32f4xx.h"
#include "systick.h"
#include <stdio.h>
#include "main.h"
#include "my_sys.h"

#include "gd32f450i_eval.h"
#include "lvgl.h"
#include "lv_examples/lv_exc_screen/exc_screen.h"
#include "touch_xpt2046.h"

/*!
    \brief      toggle the led every 500ms
    \param[in]  none
    \param[out] none
    \retval     none
*/
void led_spark(void)
{
    static __IO uint32_t timingdelaylocal = 0U;

    if(timingdelaylocal){

        if(timingdelaylocal < 500U){
            gd_eval_led_on(LED1);
        }else{
            gd_eval_led_off(LED1);
        }

        timingdelaylocal--;
    }else{
        timingdelaylocal = 1000U;
    }
}




/*!
    \brief      main function
    \param[in]  none
    \param[out] none
    \retval     none
*/
int main(void)
{
    static __IO uint32_t timingdelaylocal = 0U;
    uint16_t t_data = 0x44;
    uint16_t t_x=0, t_y=0; 
    uint32_t temp, i = 0;
    uint32_t t_ledshark=0;
    char t_char[30] = "";

    gd_eval_led_init(LED1);
    gd_eval_led_init(LED2);
    gd_eval_key_init(KEY_TAMPER, KEY_MODE_EXTI);
    systick_config();

    lv_init();
    lv_port_disp_init();
    lv_port_indev_init();
    lvAdd_excScreen();

    gd_eval_com_init(USART0);
    usart_data_transmit(USART0, 'o');
    while(RESET == usart_flag_get(USART0, USART_FLAG_TBE));
	usart_flag_clear(USART0, USART_FLAG_TBE);

	USART_DMA_Init();
//        TP_Init();
    //    ReadTPTest();
    //    adc_config();
    timer1_config();
    //    adc_software_trigger_enable(ADC0, ADC_REGULAR_CHANNEL);

    while(1){
        delay_ms(2);
        lv_tick_inc(2);
        lv_task_handler();

        // if (RESET != dma_flag_get(DMA1, DMA_CH2, DMA_FLAG_FTF))
		// {
		// 	dma_flag_clear(DMA1, DMA_CH2, DMA_FLAG_FTF);
		// }

//		if(dma_transfer_number_get(DMA1, DMA_CH2)<=6)
//		{
//    dma_channel_disable(DMA1, DMA_CH2);
//			dma_single_data_mode_init(DMA1, DMA_CH2, &dma_init_struct);
//    dma_channel_enable(DMA1, DMA_CH2);
//			USART_DMA_Init();
//		}

    // if (adc_interrupt_flag_get(ADC0, ADC_INT_FLAG_ROVF) == SET)
    // {
    //     PRINTF_UART0("ADC OVER");
    //     adc_disable(ADC0);
    // }

    // if (adc_interrupt_flag_get(ADC0, ADC_INT_FLAG_EOC) == SET)
    // {
    //      adc_regular_data_read(ADC0);
    //     adc_counter++;
    //     // sprintf(t_char, "adc:%x\t%f\r\n", i, (float)i/0xFFF*3.3);
    //     // PRINTF_UART0(t_char);
    //     adc_interrupt_flag_clear(ADC0, ADC_INT_FLAG_EOC);
    // }

        // if (t_ledshark > 250)
        // {
        //     t_ledshark = 0;
        //     gd_eval_led_toggle(LED2);
        //     // sprintf(t_char, "ADC for one second:%d\r\n", adc_counter);
        //     // PRINTF_UART0(t_char);
        //     // adc_counter=0;
        //     // adc_software_trigger_enable(ADC0, ADC_REGULAR_CHANNEL);
        // }
        // t_ledshark++;

        // PRINTF_UART0("welcome!\r\n");

		// ReadTPXY(&t_x, &t_y);
        // sprintf(t_char, "x:%d\ty:%d\r\n", t_x, t_y);
        // PRINTF_UART0(t_char);
    }
}
